/**
 * @description 定义路由拦截
 */

import { LOGIN_FLAG } from "@/config/common.conf"
import store from "@/store"
import { deCodeApi } from "@/utils"

const intercepter = function(to,_,next){
    // debugger
    // 不需要拦截的路由
    if(to.meta.nologin){
        next()
        return
    }
    // 判断有无登录标志
    let loginFlag = sessionStorage.getItem(LOGIN_FLAG)
    if(!loginFlag){
        next('/login')
        return
    }
    // 对登录标志进行解密、分割等操作，可能会有错误，所以要捕获错误
    try {
        let time = 30 * 60 * 1000
        let str = deCodeApi(loginFlag).split('----')
        let passTime = Date.now() - str[1]
        // 一般token有效期半个小时，判断token是否过期
        if(passTime > time){
            sessionStorage.removeItem(LOGIN_FLAG)
            next('/login')
            return
        }
        const token = store.getters['common/token']
        if(str[0] !== token){
            sessionStorage.removeItem(LOGIN_FLAG)
            next('/login')
            return
        }
        next()
    } catch (e) {
        console.log(e)
        sessionStorage.removeItem(LOGIN_FLAG)
    }

}

export default intercepter